package org.alive.learn.ui.swing;

import java.awt.Component;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.JButton;
import javax.swing.JFrame;

public class GridBagLayoutDemo {
	private static final Insets insets = new Insets(0, 0, 0, 0);

	public GridBagLayoutDemo() {
		final JFrame frame = new JFrame("GridBagLayout");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLayout(new GridBagLayout());
		JButton button = null;
		// Row One - Three Buttons
		button = new JButton("One");
		addComponent(frame, button, 0, 0, 1, 1, GridBagConstraints.CENTER,
				GridBagConstraints.BOTH);
		button = new JButton("Two");
		addComponent(frame, button, 1, 0, 1, 1, GridBagConstraints.CENTER,
				GridBagConstraints.BOTH);
		button = new JButton("Three");
		addComponent(frame, button, 2, 0, 1, 1, GridBagConstraints.CENTER,
				GridBagConstraints.BOTH);
		// Row Two - Two Buttons
		button = new JButton("Four");
		addComponent(frame, button, 0, 1, 2, 1, GridBagConstraints.CENTER,
				GridBagConstraints.BOTH);
		button = new JButton("Five");
		addComponent(frame, button, 2, 1, 1, 2, GridBagConstraints.CENTER,
				GridBagConstraints.BOTH);
		// Row Three - Two Buttons
		button = new JButton("Six");
		addComponent(frame, button, 0, 2, 1, 1, GridBagConstraints.CENTER,
				GridBagConstraints.BOTH);
		button = new JButton("Seven");
		addComponent(frame, button, 1, 2, 1, 1, GridBagConstraints.CENTER,
				GridBagConstraints.BOTH);
		frame.setSize(500, 200);
		frame.setVisible(true);
	}
	
	private static void addComponent(Container container, Component component,
			int gridx, int gridy, int gridwidth, int gridheight, int anchor,
			int fill) {
		GridBagConstraints gbc = new GridBagConstraints(gridx, gridy,
				gridwidth, gridheight, 1.0, 1.0, anchor, fill, insets, 0, 0);
		container.add(component, gbc);
	}
}
